import { useMenuStoreWithOut } from '@/store/modules/menu'
import { useGlobalStoreWithOut } from '@/store/modules/global'
import NProgress from "@/utils/nprogress";
import { initDynamicRouter, router } from '@/router/index';

export function setupPermission() {
  router.beforeEach(async (to, from, next) => {
    NProgress.start();

    const menuStore = useMenuStoreWithOut()
    const globalStore = useGlobalStoreWithOut()

    // 判断是否登录
    if (globalStore.token) {
      // 若登录了，且要去登录页，直接跳转首页 layout
      if (to.path === '/login') {
        next('/')
      } else {
        // 若登录了，且不是去登录页。需要判断是否有 menuList，有则直接放行。
        // 无则重新动态生成路由。重新 执行initDynamicRouter 方法 -- 解决刷新浏览器 - 页面空白的Bug
        if (menuStore.getMenuList.length) {
          next()
        } else {
          await initDynamicRouter()
          return next({ ...to, replace: true })
        }
      }
    } else {
      // 未登录 - 如果要去登录页直接放行。否则强制跳转登录页
      if (to.path === '/login') {
        next()
      } else {
        // next(`/login?redirect=${to.path}`)
        next(`/login`)
      }
    }
  })

  router.afterEach(() => {
    NProgress.done();
  });
}

export default router